package cn.tqfeiyang.springplus.framework.security;

/**
 * 用户加载服务，根据用户名查找用户详情。
 *
 * 系统实现了两个用户加载服务：
 * InMemoryAuthenticationUserLoader，固定账号和密码，如果没有定义额外的加载服务，就自动加载这个。
 * MybatisAuthenticationUserLoader，从数据库加载
 *
 * @author tqfeiyang
 * @since 2024-07-19
 */
public interface AuthenticationUserLoader {

    /**
     * 根据用户名获取用户详情
     *
     * @param username
     * @return 用户详情，如果用户名找不到则返回null。
     */
    AuthenticationUserDetails loadByUsername(String username);

    /**
     * 根据UUID获取用户详情
     *
     * @param uuid
     * @return 用户详情，如果UUID找不到则返回null。
     */
    AuthenticationUserDetails loadByUUID(String uuid);

}